/*
 * @Author: HeAo
 * @Date: 2022-08-21 21:16:15
 * @LastEditTime: 2022-08-21 21:24:32
 * @LastEditors: HeAo
 * @Description: 
 * @FilePath: \JavaScripe\day-10\04-原型链的问题.js
 * 别乱动！
 */
/*
问题1：当子构造函数的实例修改父构造函数的属性值，所有的子类实例都会受到影响
问题2：子类型在实例化时不能给父类型的构造函数传参。
解决办法：使用经典继承
*/
function Animal() {
  this.categorys = ["cat", "rabbit"];
}

function Dog() {

}
Dog.prototype = new Animal()
var d1 = new Dog()
d1.categorys.push('dog')
console.log(d1.categorys); // [ 'cat', 'rabbit', 'dog' ]
var d2 = new Dog();
console.log(d2.categorys); // [ 'cat', 'rabbit', 'dog' ]

var a = new Animal()
console.log(a.categorys); //[ 'cat', 'rabbit' ]  父构造函数的实例不会被污染